package banco;

import java.sql.ResultSet;
import java.sql.SQLException; 
import java.sql.PreparedStatement;
import java.util.Vector;

import modelo.Cliente;
import modelo.Pessoa;

public class BDCliente extends Conexao{
	
	private String sql;
	private PreparedStatement comando;
	
	public Vector<Cliente> selectAll() {
		
		super.getConexaoMySQL();
		ResultSet rs;
		sql = "Select * from Cliente";
		Vector<Cliente> resultados = new Vector<Cliente>();
		BDPessoa BDPess = new BDPessoa();
		try{			
			comando = connection.prepareStatement(sql);
			rs = comando.executeQuery();
			while (rs.next()) {  			
				
				//Utilizo a classe que gerencia pesquisas na tabela pessoa para saber o 
				//resto dos dados dos cliente
				Pessoa temp = new Pessoa();
				temp=BDPess.selectCpf(rs.getLong("CPF"));	           
				Cliente cliente = new Cliente(temp);
				
	            cliente.setCnh(rs.getLong("NumCNH"));  
	            cliente.setNumCartao(rs.getLong("NumCartao"));
	            cliente.setCelular(rs.getLong("Celular"));
	            resultados.add(cliente);  
	         } 
			return resultados;
		}
		catch(SQLException e){
			//TODO Tratar erros
			return null;
		}
		finally{
			super.FecharConexao();
		}
		
		
	}

	public Cliente selectCpf(String cpf) {
		
		super.getConexaoMySQL();
		ResultSet rs;
		sql = "Select * from Cliente where cpf = ?";
		try{			
			comando = connection.prepareStatement(sql);
			comando.setString(1, cpf);
			rs = comando.executeQuery();
			BDPessoa BDPess = new BDPessoa();
			Cliente temp=null;  
			
			while (rs.next()) {  
				
				//Utilizo a classe que gerencia pesquisas na tabela pessoa para saber o 
				//resto dos dados dos cliente
				temp = new Cliente(BDPess.selectCpf(rs.getLong("CPF")));
							
				temp.setCnh(rs.getLong("NumCNH"));
	            temp.setNumCartao(rs.getLong("NumCartao"));
	            temp.setCelular(rs.getLong("Celular"));
	            	
	         } 
			
			return temp;
		}
		catch(SQLException e){
			//TODO Tratar erros
			return null;
		}
		finally{
			super.FecharConexao();
		}
	}
	
	public boolean insert(Cliente c){
		super.getConexaoMySQL();
		sql = "INSERT INTO Cliente (cpf,NumCNH,NumCartao) VALUES (?,?,?)";
		BDPessoa BDPess = new BDPessoa();
		
		try {
			
			BDPess.insert(c);
			
			comando = connection.prepareStatement(sql);
			
			comando.setLong(1, c.getCpf());
			comando.setLong(2, c.getCnh());
			comando.setLong(3, c.getNumCartao());
		//	comando.setString(4, c.getCelular());
			
			comando.executeUpdate();
			return true;
			
		} 
		catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		}
		finally{
			super.FecharConexao();
		}
		
	}
}
